package com.bocloud.cmp.dao.app;

import java.util.List;
import java.util.Map;

import com.bocloud.cmp.entity.app.resource.Software;
import com.bocloud.common.model.Param;
import com.bocloud.common.model.SimpleBean;
import com.bocloud.database.core.intf.GenericDao;

/**
 * 
 * @author zjm
 * @date 2017年3月17日
 */
public interface SoftwareDao extends GenericDao<Software, Long> {

	/**
	 * 查询镜像详情
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public Software query(Long id) throws Exception;

	/**
	 * 查询镜像列表
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param page
	 * @param rows
	 * @param params
	 * @param sorter
	 * @return
	 * @throws Exception
	 */
	public List<Software> list(int page, int rows, List<Param> params, Map<String, String> sorter, String deptId)
			throws Exception;

	/**
	 * 查询镜像简易列表
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param params
	 * @param sorter
	 * @return
	 * @throws Exception
	 */
	public List<SimpleBean> list(List<Param> params, Map<String, String> sorter, String deptId) throws Exception;

	/**
	 * 查询符合条件的数据数量
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param params
	 * @return
	 * @throws Exception
	 */
	public int count(List<Param> params, String deptId) throws Exception;

	/**
	 * 删除镜像信息
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param id
	 * @param userId
	 * @return
	 * @throws Exception
	 */
	public boolean deleteById(Long id, Long userId) throws Exception;

	/**
	 * 根据镜像名称查找
	 * 
	 * @author zjm
	 * @date 2017年3月17日
	 * 
	 * @param name
	 * @param version
	 * @return
	 * @throws Exception
	 */
	public Software getSoftwareByNameWithVersionAndNamespace(String name, String version, String namespace) throws Exception;

	/**
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public boolean deleteRegistrySoftwareInfo(Long id) throws Exception;

	/**
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public boolean deleteSoftwareAppInfo(Long id) throws Exception;

	/**
	 * @param id
	 * @param deptId
	 * @return
	 * @throws Exception
	 */
	public boolean authorize(Long id, Long userId, Long deptId) throws Exception;
}
